package com.admin.server.domain;

import java.util.HashSet;
import java.util.Set;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import com.admin.share.model.UsuarioDTO;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;


@PersistenceCapable
public class Usuario {

	@PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
	
	@Persistent
	private String usuario;
	@Persistent
	private String clave;
	@Persistent
	private String nombres;
	@Persistent
	private String apellidos;
	@Persistent
	private Privilegio privilegio;
	
	@Persistent
	private Set<Key> rol_ids = new HashSet<Key>();
	
	public Usuario(String usuario,String clave,String nombres,String apellidos){
		this.usuario = usuario;
		this.clave = clave;
		this.nombres = nombres;
		this.apellidos = apellidos;
	}

	public Key getKey() {
		return key;
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getClave() {
		return clave;
	}

	public void setClave(String clave) {
		this.clave = clave;
	}

	public String getNombres() {
		return nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getApellidos() {
		return apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}

	public Privilegio getPrivilegio() {
		return privilegio;
	}
	public static UsuarioDTO toDTO(Usuario user) {
		if (user == null) {
	      return null;
	    }
		UsuarioDTO userDTO = new UsuarioDTO(user.getNombres(), user.getApellidos());		
		userDTO.setIdprivilegio(user.getKey().getParent().getId());
		userDTO.setId(KeyFactory.keyToString(user.getKey()));
		return userDTO;
	}
	
	public Set<Key> getRol_ids() {
		return rol_ids;
	}
	public void addRol_id(Key rol_id) {
		this.rol_ids.add(rol_id);
	}

	public UsuarioDTO toUsuarioDTO() {
		UsuarioDTO userDTO = new UsuarioDTO(nombres, apellidos);		
		userDTO.setIdprivilegio(key.getParent().getId());
		userDTO.setId(KeyFactory.keyToString(key));
		userDTO.setUsuario(usuario);
		userDTO.setPrivilegio(privilegio.getDescripcion());
		return userDTO;
	}
}
